#ifndef PROVIDENT_VANILLA_OPTION_HPP_
#define PROVIDENT_VANILLA_OPTION_HPP_

#include <promote/String.hpp>

namespace provident
{
    class VanillaOption
    {
    public:
        enum Style  { AMERICAN, EUROPEAN };
        enum Type { CALL, PUT };

        VanillaOption(promote::String const& symbol,
                      promote::String const& underlyerSymbol,
                      double const expiryYears,
                      double const strikePrice,
                      Type const type,
                      Style const style,
                      unsigned const multiplier=100);

        /* Const */
        double expiryYears() const              { return _expiryYears; }
        unsigned multiplier() const             { return _multiplier; }
        double strikePrice() const              { return _strikePrice; }
        Style style() const                     { return _style; }
        promote::String const& symbol() const   { return _symbol; }
        Type type() const                       { return _type; }
        promote::String const& underlyerSymbol() const
        { 
            return _underlyerSymbol; 
        }
    private:
        promote::String const _symbol;
        promote::String const _underlyerSymbol;
        double const _expiryYears;
        double const _strikePrice;
        Type const _type;
        Style const _style;
        unsigned const _multiplier;
    };
}

#endif /* PROVIDENT_VANILLA_OPTION_HPP_ */

